package com.shiwenping.reply.net.service;

import com.shiwenping.reply.net.domain.BaseHttpResult;
import com.shiwenping.reply.net.domain.FaqListResult;
import com.shiwenping.reply.net.domain.FileListResult;
import com.shiwenping.reply.net.domain.LoginResult;

import java.util.List;

import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.Streaming;
import retrofit2.http.Url;
import rx.Observable;

/**
 * @author shiwenping
 * @date 17-11-8 下午4:52
 */

public interface AllService {
    /**
     * 通过账号密码登录
     *
     * @param requestBody
     * @return
     */
    @POST("/wpclient/mobile-login")
    Observable<LoginResult> loginUserName(@Body RequestBody requestBody);

    /**
     * 通过序列号登录
     *
     * @param serialnumber 手机唯一序列号
     * @param password     密码
     * @return
     */
    @Multipart
    @POST("/wpclient/mobile-login")
    Observable<LoginResult> loginSerial(@Query("serialnumber") String serialnumber, @Query("password") String password);

    /**
     * 获取知识库列表
     *
     * @param requestBody 请求内容
     * @return 返回Rxjava
     */
    @POST("/wpclient/api/get-faq-list")
    Observable<FaqListResult> getFaqList(@Body RequestBody requestBody);

    @POST("/wpclient/api/get-file-list")
    Observable<FileListResult> getFileList(@Body RequestBody requestBody);

    /**
     * 下载文件
     *
     * @param fileUrl 文件地址
     * @return  返回
     */
    @GET
    @Streaming
    Call<ResponseBody> download(@Url String fileUrl);

    /**
     * 获取知识库分类
     * @return  返回知识库分类
     */
    @GET("/wpclient/api/get-faq-tags")
    Observable<BaseHttpResult<List<String>>> getFagTags();

    /**
     * 获取文件分类
     * @return  返回文件分类列表
     */
    @GET("/wpclient/api/get-file-tags")
    Observable<BaseHttpResult<List<String>>> getFileTags();

    /**
     * 删除
     * @return
     */
    @POST("/wpclient/api/delete-faq?faq_id={faq_id}")
    Observable<BaseHttpResult<String>> delFaq(@Path("faq_id") String faq_id);
}
